# Librerias
require(tidyverse)
require(geosphere)
require(rvest) # Cargamos el paquete
# Llamamos a los DataSets
datos_2021 = read.csv('Data/sna_abril_2021_fixed_encoding.csv', encoding = 'UTF-8', sep = ',')
# Concateno todos los datos
datos2= read_csv2('Data/202109-informe-ministerio.csv')
ℹ Using "','" as decimal and "'.'" as grouping mark. Use `read_delim()` for more control.
Rows: 219803 Columns: 11
── Column specification ────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ";"
chr (9): Fecha, Clase de Vuelo (todos los vuelos), Clasificación Vuelo, Tipo de Movimiento, Aeropuerto, Ori...
dbl (1): Pasajeros
time (1): Hora UTC
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
datos2$Fecha_completa = strptime(paste(datos2$Fecha, datos2$`Hora UTC`), format = "%d/%m/%Y %H:%M:%S")
# Utilizamos la tabla que se encuentra en 'https://en.wikipedia.org/wiki/List_of_airports_in_Argentina'
# para acceder a las variables de ciudad, provincia y coordenadas de cada aeropuerto
aeropuertos_wiki = read_html('https://en.wikipedia.org/wiki/List_of_airports_in_Argentina')
elemento_tabla = html_element(aeropuertos_wiki,'.wikitable')
aeropuertos = html_table(elemento_tabla)
# Corrijo la columna de coordenadas
separar = strsplit((aeropuertos$Coordinates), '/') # Divide a los strings en los lugares donde haya '/'
coordenadas = sapply(separar, function(x) x[3]) # Me quedo solo con el 3er tipo de coordenada
coordenadas = gsub('[^0-9,.,-]','', coordenadas) # Elimino los caracteres que no quiero utilizar
aeropuertos = aeropuertos %>%
mutate(lat = as.numeric(substr(coordenadas, 1, 9)), long = as.numeric(substr(coordenadas, 10, 18))) # Separo a mano latitud y longitud (revizar si esta todo en orden)
aeropuertos = filter(aeropuertos, nchar(ICAO)>1)
aeropuertos = aeropuertos[order(aeropuertos$ICAO),]
for(i in 1:length(aeropuertos$ICAO)){
inds = datos2$Aeropuerto==aeropuertos$IATA[i]
datos2[inds,c('ciudad_origen','provincia_origen','lat_origen','long_origen')] = aeropuertos[i,c("City served","Province","lat","long")]
inds = datos2$`Origen / Destino`==aeropuertos$IATA[i]
datos2[inds,c('ciudad_destino','provincia_destino','lat_destino','long_destino')] = aeropuertos[i,c("City served","Province","lat","long")]
}
for(i in 1:length(datos_2021$ana)){
inds = datos2$Aeropuerto==datos_2021$ana[i]
datos2[inds,c('ciudad_origen','provincia_origen','lat_origen','long_origen')] = datos_2021[i,c("nam","cpr","x","y")]
inds = datos2$`Origen / Destino`==datos_2021$ana[i]
datos2[inds,c('ciudad_destino','provincia_destino','lat_destino','long_destino')] = datos_2021[i,c("nam","cpr","x","y")]
inds = datos2$Aeropuerto==datos_2021$iko[i]
datos2[inds,c('ciudad_destino','provincia_destino','lat_destino','long_destino')] = datos_2021[i,c("nam","cpr","x","y")]
inds = datos2$`Origen / Destino`==datos_2021$iko[i]
datos2[inds,c('ciudad_destino','provincia_destino','lat_destino','long_destino')] = datos_2021[i,c("nam","cpr","x","y")]
}
datos2 = drop_na(datos2)
datos2$distancia = distHaversine(datos2[,c("long_origen","lat_origen")],datos2[,c("long_destino","lat_destino")])/1000
datos2 = datos2 %>%
filter(`Aerolinea Nombre` != 0)
datos2$fecha_hora = strptime(paste(datos2$Fecha, datos2$`Hora UTC`), format = "%d/%m/%Y %H:%M:%S")
despegues = datos2[datos2$`Tipo de Movimiento` == 'Despegue',]
aterrizajes = datos2[datos2$`Tipo de Movimiento` == 'Aterrizaje',]
# dividimos en despegues y aterrizajes
matched = left_join(despegues, aterrizajes, by= c("Aeropuerto" = "Origen / Destino", "Origen / Destino" = "Aeropuerto", "Aerolinea Nombre" = "Aerolinea Nombre", "Aeronave" = "Aeronave")) %>%
mutate(tdif = as.numeric(fecha_hora.y - fecha_hora.x, units='hours')) %>%
group_by(Aeropuerto, fecha_hora.x, Aeronave, `Aerolinea Nombre`) %>%
filter(tdif > 0) %>%
filter(tdif < 5) %>%
filter(tdif == min(tdif))
Una pregunta que nos pareció interesante es ver qué pares de aeropuertos se comunican más.
Otra pregunta interesante es para cada hora del año que aviones estuvieron volando en ese momento
Para eso primero hay que agregar una hora universal a los vuelos

Me interesa ver cuantos vuelos realiza cada aerolinea

LS0tCnRpdGxlOiAiVHJhYmFqbyBQcmFjdGljbyAtIExhYm9yYXRvcmlvIGRlIERhdG9zIgphdXRob3I6ICJNb3JhbGVzIEpvYXF1aW4sIExhc29yc2EgTGF1dGFybyB5IFBhbGF6em8gVG9tYXMiCmRhdGU6ICIxNC8xMC8yMDIxIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogICAgdG9jOiB5ZXMKICBodG1sX25vdGVib29rOgogICAgdGhlbWU6IGx1bWVuCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKc3VidGl0bGU6ICJMYWJvcmF0b3JpbyBkZSBEYXRvcyIKLS0tCgpgYGB7cn0KIyBMaWJyZXJpYXMKcmVxdWlyZSh0aWR5dmVyc2UpCnJlcXVpcmUoZ2Vvc3BoZXJlKQpyZXF1aXJlKHJ2ZXN0KSAjIENhcmdhbW9zIGVsIHBhcXVldGUKYGBgCgoKYGBge3J9CiMgTGxhbWFtb3MgYSBsb3MgRGF0YVNldHMKCmRhdG9zXzIwMjEgPSByZWFkLmNzdignRGF0YS9zbmFfYWJyaWxfMjAyMV9maXhlZF9lbmNvZGluZy5jc3YnLCBlbmNvZGluZyA9ICdVVEYtOCcsIHNlcCA9ICcsJykKCiMgQ29uY2F0ZW5vIHRvZG9zIGxvcyBkYXRvcwpkYXRvczI9IHJlYWRfY3N2MignRGF0YS8yMDIxMDktaW5mb3JtZS1taW5pc3RlcmlvLmNzdicpCgpkYXRvczIkRmVjaGFfY29tcGxldGEgPSBzdHJwdGltZShwYXN0ZShkYXRvczIkRmVjaGEsIGRhdG9zMiRgSG9yYSBVVENgKSwgZm9ybWF0ID0gIiVkLyVtLyVZICVIOiVNOiVTIikKCmBgYAoKYGBge3J9CiMgVXRpbGl6YW1vcyBsYSB0YWJsYSBxdWUgc2UgZW5jdWVudHJhIGVuICdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX2FpcnBvcnRzX2luX0FyZ2VudGluYScKIyBwYXJhIGFjY2VkZXIgYSBsYXMgdmFyaWFibGVzIGRlIGNpdWRhZCwgcHJvdmluY2lhIHkgY29vcmRlbmFkYXMgZGUgY2FkYSBhZXJvcHVlcnRvIAoKYWVyb3B1ZXJ0b3Nfd2lraSA9IHJlYWRfaHRtbCgnaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9haXJwb3J0c19pbl9BcmdlbnRpbmEnKQplbGVtZW50b190YWJsYSAgID0gaHRtbF9lbGVtZW50KGFlcm9wdWVydG9zX3dpa2ksJy53aWtpdGFibGUnKQphZXJvcHVlcnRvcyAgICAgID0gaHRtbF90YWJsZShlbGVtZW50b190YWJsYSkKCmBgYAoKYGBge3J9CiMgQ29ycmlqbyBsYSBjb2x1bW5hIGRlIGNvb3JkZW5hZGFzIAoKc2VwYXJhciAgICAgPSBzdHJzcGxpdCgoYWVyb3B1ZXJ0b3MkQ29vcmRpbmF0ZXMpLCAnLycpICMgRGl2aWRlIGEgbG9zIHN0cmluZ3MgZW4gbG9zIGx1Z2FyZXMgZG9uZGUgaGF5YSAnLycgCmNvb3JkZW5hZGFzID0gc2FwcGx5KHNlcGFyYXIsIGZ1bmN0aW9uKHgpIHhbM10pICAgICAgICAjIE1lIHF1ZWRvIHNvbG8gY29uIGVsIDNlciB0aXBvIGRlIGNvb3JkZW5hZGEKY29vcmRlbmFkYXMgPSBnc3ViKCdbXjAtOSwuLC1dJywnJywgY29vcmRlbmFkYXMpICAgICAgICAgICAjIEVsaW1pbm8gbG9zIGNhcmFjdGVyZXMgcXVlIG5vIHF1aWVybyB1dGlsaXphcgoKYWVyb3B1ZXJ0b3MgPSBhZXJvcHVlcnRvcyAlPiUgCiAgbXV0YXRlKGxhdCA9IGFzLm51bWVyaWMoc3Vic3RyKGNvb3JkZW5hZGFzLCAxLCA5KSksIGxvbmcgPSBhcy5udW1lcmljKHN1YnN0cihjb29yZGVuYWRhcywgMTAsIDE4KSkpICMgU2VwYXJvIGEgbWFubyBsYXRpdHVkIHkgbG9uZ2l0dWQgKHJldml6YXIgc2kgZXN0YSB0b2RvIGVuIG9yZGVuKQoKYWVyb3B1ZXJ0b3MgPSBmaWx0ZXIoYWVyb3B1ZXJ0b3MsIG5jaGFyKElDQU8pPjEpCmFlcm9wdWVydG9zID0gYWVyb3B1ZXJ0b3Nbb3JkZXIoYWVyb3B1ZXJ0b3MkSUNBTyksXQpgYGAKCmBgYHtyfQoKZm9yKGkgaW4gMTpsZW5ndGgoYWVyb3B1ZXJ0b3MkSUNBTykpewogIGluZHMgPSBkYXRvczIkQWVyb3B1ZXJ0bz09YWVyb3B1ZXJ0b3MkSUFUQVtpXQogIGRhdG9zMltpbmRzLGMoJ2NpdWRhZF9vcmlnZW4nLCdwcm92aW5jaWFfb3JpZ2VuJywnbGF0X29yaWdlbicsJ2xvbmdfb3JpZ2VuJyldID0gYWVyb3B1ZXJ0b3NbaSxjKCJDaXR5wqBzZXJ2ZWQiLCJQcm92aW5jZSIsImxhdCIsImxvbmciKV0KICAKICBpbmRzID0gZGF0b3MyJGBPcmlnZW4gLyBEZXN0aW5vYD09YWVyb3B1ZXJ0b3MkSUFUQVtpXQogIGRhdG9zMltpbmRzLGMoJ2NpdWRhZF9kZXN0aW5vJywncHJvdmluY2lhX2Rlc3Rpbm8nLCdsYXRfZGVzdGlubycsJ2xvbmdfZGVzdGlubycpXSA9IGFlcm9wdWVydG9zW2ksYygiQ2l0ecKgc2VydmVkIiwiUHJvdmluY2UiLCJsYXQiLCJsb25nIildCn0KICBmb3IoaSBpbiAxOmxlbmd0aChkYXRvc18yMDIxJGFuYSkpewogIGluZHMgPSBkYXRvczIkQWVyb3B1ZXJ0bz09ZGF0b3NfMjAyMSRhbmFbaV0KICBkYXRvczJbaW5kcyxjKCdjaXVkYWRfb3JpZ2VuJywncHJvdmluY2lhX29yaWdlbicsJ2xhdF9vcmlnZW4nLCdsb25nX29yaWdlbicpXSA9IGRhdG9zXzIwMjFbaSxjKCJuYW0iLCJjcHIiLCJ4IiwieSIpXQogIAogIAogIGluZHMgPSBkYXRvczIkYE9yaWdlbiAvIERlc3Rpbm9gPT1kYXRvc18yMDIxJGFuYVtpXQogIGRhdG9zMltpbmRzLGMoJ2NpdWRhZF9kZXN0aW5vJywncHJvdmluY2lhX2Rlc3Rpbm8nLCdsYXRfZGVzdGlubycsJ2xvbmdfZGVzdGlubycpXSA9IGRhdG9zXzIwMjFbaSxjKCJuYW0iLCJjcHIiLCJ4IiwieSIpXQogIAogIGluZHMgPSBkYXRvczIkQWVyb3B1ZXJ0bz09ZGF0b3NfMjAyMSRpa29baV0KICBkYXRvczJbaW5kcyxjKCdjaXVkYWRfZGVzdGlubycsJ3Byb3ZpbmNpYV9kZXN0aW5vJywnbGF0X2Rlc3Rpbm8nLCdsb25nX2Rlc3Rpbm8nKV0gPSBkYXRvc18yMDIxW2ksYygibmFtIiwiY3ByIiwieCIsInkiKV0KICAKICBpbmRzID0gZGF0b3MyJGBPcmlnZW4gLyBEZXN0aW5vYD09ZGF0b3NfMjAyMSRpa29baV0KICBkYXRvczJbaW5kcyxjKCdjaXVkYWRfZGVzdGlubycsJ3Byb3ZpbmNpYV9kZXN0aW5vJywnbGF0X2Rlc3Rpbm8nLCdsb25nX2Rlc3Rpbm8nKV0gPSBkYXRvc18yMDIxW2ksYygibmFtIiwiY3ByIiwieCIsInkiKV0KfQoKZGF0b3MyID0gZHJvcF9uYShkYXRvczIpCmRhdG9zMiRkaXN0YW5jaWEgPSBkaXN0SGF2ZXJzaW5lKGRhdG9zMlssYygibG9uZ19vcmlnZW4iLCJsYXRfb3JpZ2VuIildLGRhdG9zMlssYygibG9uZ19kZXN0aW5vIiwibGF0X2Rlc3Rpbm8iKV0pLzEwMDAKCmRhdG9zMiA9IGRhdG9zMiAlPiUgCiAgZmlsdGVyKGBBZXJvbGluZWEgTm9tYnJlYCAhPSAwKQpgYGAKCgpgYGB7cn0KCmRhdG9zMiRmZWNoYV9ob3JhID0gc3RycHRpbWUocGFzdGUoZGF0b3MyJEZlY2hhLCBkYXRvczIkYEhvcmEgVVRDYCksIGZvcm1hdCA9ICIlZC8lbS8lWSAlSDolTTolUyIpCmRlc3BlZ3VlcyA9IGRhdG9zMltkYXRvczIkYFRpcG8gZGUgTW92aW1pZW50b2AgPT0gJ0Rlc3BlZ3VlJyxdCmF0ZXJyaXphamVzID0gZGF0b3MyW2RhdG9zMiRgVGlwbyBkZSBNb3ZpbWllbnRvYCA9PSAnQXRlcnJpemFqZScsXQoKYGBgCgoKCmBgYHtyfQojIGRpdmlkaW1vcyBlbiBkZXNwZWd1ZXMgeSBhdGVycml6YWplcwoKCm1hdGNoZWQgPSBsZWZ0X2pvaW4oZGVzcGVndWVzLCBhdGVycml6YWplcywgYnk9IGMoIkFlcm9wdWVydG8iID0gIk9yaWdlbiAvIERlc3Rpbm8iLCAiT3JpZ2VuIC8gRGVzdGlubyIgPSAiQWVyb3B1ZXJ0byIsICJBZXJvbGluZWEgTm9tYnJlIiA9ICJBZXJvbGluZWEgTm9tYnJlIiwgIkFlcm9uYXZlIiA9ICJBZXJvbmF2ZSIpKSAlPiUgCiAgbXV0YXRlKHRkaWYgPSBhcy5udW1lcmljKGZlY2hhX2hvcmEueSAtIGZlY2hhX2hvcmEueCwgdW5pdHM9J2hvdXJzJykpICU+JQogIGdyb3VwX2J5KEFlcm9wdWVydG8sIGZlY2hhX2hvcmEueCwgQWVyb25hdmUsIGBBZXJvbGluZWEgTm9tYnJlYCkgJT4lIAogIGZpbHRlcih0ZGlmID4gMCkgJT4lCiAgZmlsdGVyKHRkaWYgPCA1KSAlPiUgCiAgZmlsdGVyKHRkaWYgPT0gbWluKHRkaWYpKQpgYGAKClVuYSBwcmVndW50YSBxdWUgbm9zIHBhcmVjacOzIGludGVyZXNhbnRlIGVzIHZlciBxdcOpIHBhcmVzIGRlIGFlcm9wdWVydG9zIHNlIGNvbXVuaWNhbiBtw6FzLiAKYGBge3J9CmxpYnJhcnkoZ2dwbG90MikKYWVycyA9IHVuaXF1ZShkYXRvczIkQWVyb3B1ZXJ0bykKbWF0ID0gbWF0cml4KG5yb3cgPSBsZW5ndGgoYWVycyksIG5jb2wgPSBsZW5ndGgoYWVycykpCmNvbG5hbWVzKG1hdCkgPSBhZXJzCnJvdy5uYW1lcyhtYXQpID0gYWVycwoKZm9yKGkgaW4gMTpsZW5ndGgoYWVycykpewogIGZvcihqIGluIDE6bGVuZ3RoKGFlcnMpKXsKICAgIG1hdFtpLGpdICA9ICBzdW0oKGRhdG9zMiRBZXJvcHVlcnRvPT1hZXJzW2ldKSAmIChkYXRvczIkYE9yaWdlbiAvIERlc3Rpbm9gPT1hZXJzW2pdKSkKICB9Cn0KaW5zdGFsbC5wYWNrYWdlcygiaGVhdG1hcGx5IikKbGlicmFyeShoZWF0bWFwbHkpCmhlbHAoImhlYXRtYXBseSIpCgpoZWF0bWFwbHkobWF0LCBSb3d2ID0gTkEsIENvbHYgPSBOQSwgIGNvbF9kZW5kX3VwPUZBTFNFKSU+JSAKICBsYXlvdXQoeGF4aXMgPSBsaXN0KHNpZGUgPSAidG9wIikpCmBgYApPdHJhIHByZWd1bnRhIGludGVyZXNhbnRlIGVzIHBhcmEgY2FkYSBob3JhIGRlbCBhw7FvIHF1ZSBhdmlvbmVzIGVzdHV2aWVyb24gdm9sYW5kbyBlbiBlc2UgbW9tZW50bwoKUGFyYSBlc28gcHJpbWVybyBoYXkgcXVlIGFncmVnYXIgdW5hIGhvcmEgdW5pdmVyc2FsIGEgbG9zIHZ1ZWxvcwoKYGBge3J9CmluaWNpbyA9IGFzLkRhdGUoIjIwMjEtMDEtMDEiKQptYXRjaGVkJGRlc3BlZ3VlVW5pdmVyc2FsID0gYXMuaW50ZWdlcigtZGlmZnRpbWUoaW5pY2lvLG1hdGNoZWQkRmVjaGFfY29tcGxldGEueCwgdW5pdHM9ImhvdXJzIikpCm1hdGNoZWQkbGxlZ2FkYVVuaXZlcnNhbCA9IGFzLmludGVnZXIoLWRpZmZ0aW1lKGluaWNpbyxtYXRjaGVkJEZlY2hhX2NvbXBsZXRhLnksIHVuaXRzPSJob3VycyIpKzAuOTk5OSkKZmluID0gbWF4KG1hdGNoZWQkbGxlZ2FkYVVuaXZlcnNhbCkrMQpoaXN0byA9IG1hdHJpeChucm93PTEsbmNvbD1maW4pCmhpc3RvWyxjKDE6ZmluKV0gPSAwCmZvcihpIGluIDE6bGVuZ3RoKG1hdGNoZWQkZGVzcGVndWVVbml2ZXJzYWwpKXsKICBpbmRzID0gbWF0Y2hlZCRkZXNwZWd1ZVVuaXZlcnNhbFtpXTptYXRjaGVkJGxsZWdhZGFVbml2ZXJzYWxbaV0KICBoaXN0b1sxLGluZHNdID0gaGlzdG9bMSxpbmRzXSsxCiAgI3ByaW50KGhpc3RvWzEsaW5kc10pCiAgI2ZvcihqIGluIG1hdGNoZWQkZGVzcGVndWVVbml2ZXJzYWxbaV06bWF0Y2hlZCRsbGVnYWRhVW5pdmVyc2FsW2ldKXsKICAjICBoaXN0b1sxLGpdID0gaGlzdG9bMSxqXSsxCiAgI30KfQojcGxvdCgxOmxlbmd0aChoaXN0b1sxLF0pLGhpc3RvWzEsXSwgdHlwZT0icyIpCmJhcnBsb3QoaGlzdG9bMSxdLCBuYW1lcy5hcmc9KGluaWNpbyArIDE6ZmluLzI0KSwgbGFzID0gMiAsIGNleC5uYW1lcz0wLjQpCgpgYGAKTWUgaW50ZXJlc2EgdmVyIGN1YW50b3MgdnVlbG9zIHJlYWxpemEgY2FkYSBhZXJvbGluZWEKCmBgYHtyfQphZXJvbGluZWFzID0gdW5pcXVlKG1hdGNoZWQkYEFlcm9saW5lYSBOb21icmVgKQoKYXBwcyA9IG1hdHJpeChucm93ID0gMSwgbmNvbCA9IGxlbmd0aChhZXJvbGluZWFzKSkKY29sbmFtZXMoYXBwcykgPSBhZXJvbGluZWFzCmZvcihhciBpbiBhZXJvbGluZWFzKXsKICBhcHBzWzEsYXJdID0gc3VtKChtYXRjaGVkJGBBZXJvbGluZWEgTm9tYnJlYD09YXIpKQp9CmFwcHMgPSBhcHBzWzEsb3JkZXIoYXBwcywgZGVjcmVhc2luZz1UKV0KYmFycGxvdChhcHBzLCBsYXMgPSAyLCBjZXgubmFtZXM9MC40KQpgYGAK